ديف أوبس

استخدام ProxySQL لموازنة الحمل MySQL

كيفية استخدام ProxySQL كموازن تحميل لخادم MySQL على نظام التشغيل أوبنتو 16.04

مقدمة

تعد عملية تحسين أداء قاعدة البيانات أحد أهم الجوانب التي يسعى إليها مسؤولو الأنظمة والمطورون في بيئات الإنتاج. من بين العديد من الحلول المتاحة، يأتي ProxySQL كأداة قوية تعمل كموازن تحميل لخوادم MySQL. فهي تتيح تحسين استجابة النظام وتقليل العبء على الخوادم الرئيسية عن طريق توزيع الحمل بين عدة خوادم MySQL.

في هذا المقال، سنتعرف على كيفية استخدام ProxySQL على نظام أوبنتو 16.04 كموازن تحميل لخوادم MySQL. سنغطي جميع الخطوات من البداية وحتى تكامل ProxySQL مع خوادم MySQL لضمان تحسين الأداء والاستجابة في بيئة الإنتاج.

ما هو ProxySQL؟

ProxySQL هو خادم وكيل (Proxy Server) يمكن أن يعمل بين تطبيقات العملاء وخوادم قاعدة البيانات، مما يساعد على توجيه استعلامات SQL إلى خوادم مختلفة بناءً على استراتيجيات محددة، مثل موازنة الحمل، أو تحسين الأداء. كما أنه يتمتع بالقدرة على تحسين استعلامات SQL، وإعادة التوجيه التلقائي عند حدوث فشل في الخوادم، وتقديم تقارير إحصائية حول أداء الخوادم.

الفوائد الرئيسية لاستخدام ProxySQL:

  • موازنة الحمل: يقوم بتوزيع الاستعلامات بين عدة خوادم MySQL لضمان توزيع الحمل بشكل متساوٍ.

  • تحسين الأداء: من خلال تخزين الاستعلامات الشائعة في الذاكرة، يمكن تحسين استجابة النظام بشكل كبير.

  • المرونة: يدعم ProxySQL تقنيات متعددة لموازنة الحمل مثل round-robin، و least-connections، وغيرها.

  • التكرار والموثوقية: في حالة حدوث مشكلة في أحد الخوادم، يقوم ProxySQL بإعادة توجيه الاستعلامات إلى الخوادم الأخرى.

الخطوة الأولى: تثبيت ProxySQL على أوبنتو 16.04

في البداية، يجب تثبيت ProxySQL على جهاز أوبنتو 16.04. لنبدأ بتحديث النظام:

bash
sudo apt-get update sudo apt-get upgrade

ثم قم بتثبيت ProxySQL باستخدام الأمر التالي:

bash
sudo apt-get install proxysql

بعد اكتمال عملية التثبيت، تحقق من تثبيت ProxySQL بنجاح عن طريق تشغيل الأمر:

bash
proxysql --version

الخطوة الثانية: إعداد خوادم MySQL

قبل إعداد ProxySQL، من الضروري أن يكون لديك على الأقل خادم MySQL يعمل في بيئة إنتاجية. إذا لم يكن لديك خوادم MySQL جاهزة، يمكنك تثبيت MySQL على نفس الجهاز أو على جهاز آخر. افترض أنك تستخدم MySQL 5.7 على أوبنتو 16.04، يمكنك تثبيته عبر:

bash
sudo apt-get install mysql-server

تأكد من تشغيل خوادم MySQL عبر التحقق من حالة الخدمة:

bash
sudo systemctl status mysql

الخطوة الثالثة: تكوين ProxySQL

بعد تثبيت ProxySQL، تحتاج إلى تكوينه لتوجيه الاستعلامات إلى خوادم MySQL. للقيام بذلك، يجب تعديل إعدادات ProxySQL.

  1. إعداد الاتصال بـ ProxySQL:
    افتح قاعدة البيانات الإدارية لـ ProxySQL عبر الأداة mysql:

    bash
    mysql -u root -p -h 127.0.0.1 -P 6032

    بعد الدخول إلى الواجهة، يمكنك بدء عملية التكوين.

  2. إضافة خوادم MySQL إلى ProxySQL:
    أولاً، قم بإضافة خوادم MySQL إلى جدول خوادم ProxySQL باستخدام الاستعلام التالي:

    sql
    INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (0, 'mysql1.example.com', 3306); INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (1, 'mysql2.example.com', 3306);

    في هذا المثال، لدينا خادمان MySQL يعملان على المضيفين mysql1.example.com و mysql2.example.com، واللذين يتم إضافتهما إلى ProxySQL.

  3. إعداد موازنة الحمل:
    يمكنك الآن تكوين استراتيجية موازنة الحمل. في هذا المثال، سنستخدم أسلوب round-robin حيث يتم توزيع الاستعلامات بشكل دوري بين الخوادم:

    sql
    UPDATE mysql_servers SET weight = 100 WHERE hostname IN ('mysql1.example.com', 'mysql2.example.com');
  4. إعداد قواعد التوجيه:
    يمكنك الآن إضافة قواعد التوجيه في ProxySQL لتوجيه الاستعلامات إلى مجموعات معينة من الخوادم بناءً على نوع الاستعلام:

    sql
    INSERT INTO mysql_query_rules (rule_id, match_pattern, destination_hostgroup) VALUES (1, '^SELECT', 0);
  5. تفعيل التغييرات:
    بعد إدخال التعديلات، تأكد من إعادة تحميل القواعد وتحديث الإعدادات:

    sql
    LOAD MYSQL SERVERS TO RUNTIME; LOAD MYSQL QUERY RULES TO RUNTIME; SAVE MYSQL SERVERS TO DISK; SAVE MYSQL QUERY RULES TO DISK;

الخطوة الرابعة: اختبار تكامل ProxySQL مع MySQL

بعد تكوين ProxySQL، يجب اختبار الاتصال بين ProxySQL وخوادم MySQL للتأكد من أن الموازنة تتم بشكل صحيح.

  1. التحقق من الاتصال:
    يمكنك التحقق من حالة الخوادم عبر الاتصال بقاعدة البيانات باستخدام الأدوات المناسبة مثل mysql:

    bash
    mysql -u root -h 127.0.0.1 -P 6033

    ثم تأكد من أن الاستعلامات يتم توزيعها على الخوادم بشكل صحيح.

  2. اختبار الأداء:
    لاختبار فعالية ProxySQL في موازنة الحمل، يمكنك تشغيل عدة استعلامات متوازية والتحقق من توزيع الحمل بين الخوادم:

    bash
    ab -n 1000 -c 10 http://127.0.0.1:6033

    حيث يقوم الأمر أعلاه بمحاكاة 1000 طلب بتوازي 10 طلبات في نفس الوقت. يمكنك مراقبة الأداء باستخدام أدوات مثل htop أو mysqladmin.

الخطوة الخامسة: الصيانة والرقابة

من المهم متابعة حالة ProxySQL بشكل دوري لضمان استقرار النظام. يوفر ProxySQL العديد من الأدوات والإحصائيات التي يمكن استخدامها لمراقبة أداء الخوادم والتأكد من التوزيع السليم للأحمال.

  1. مراقبة الأداء:
    يمكنك التحقق من إحصائيات ProxySQL من خلال استعلامات SQL مثل:

    sql
    SELECT * FROM stats_mysql_query_digest;

    توفر هذه الاستعلامات معلومات شاملة حول الاستعلامات التي تم تنفيذها والأداء العام لخوادم MySQL.

  2. إعادة تحميل التكوينات:
    إذا كان هناك أي تغيير في التكوينات، يجب إعادة تحميل التغييرات باستخدام الأوامر التالية:

    sql
    LOAD MYSQL SERVERS TO RUNTIME; LOAD MYSQL QUERY RULES TO RUNTIME;

    كما يجب التأكد من حفظ التغييرات إلى القرص:

    sql
    SAVE MYSQL SERVERS TO DISK; SAVE MYSQL QUERY RULES TO DISK;

الختام

يعد ProxySQL أداة فعالة لتحسين أداء قاعدة البيانات، خاصة في بيئات الإنتاج ذات الازدحام العالي. من خلال تكوينه بشكل صحيح كموازن تحميل لخوادم MySQL، يمكنك تحسين استجابة النظام، وتوزيع الأحمال بشكل عادل بين الخوادم المختلفة، وبالتالي تحسين تجربة المستخدم والموثوقية في النظام. من خلال استخدام ProxySQL على نظام أوبنتو 16.04، يتم الحصول على حل مرن وقوي يدعم أعباء العمل المتزايدة مع الحفاظ على الأداء العالي للنظام.